home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
8bitfiles.net/archives
/
archives.tar
/
archives
/
compuserve-file-archive
/
05 Programming
/
SHLRAM.SDA
/
DOLOAD.A
< prev
next >
Wrap
Text File
|
2019-04-13
|
4KB
|
285 lines
;
; SHELLRAM
;
; ┬Y: ┴DRIAN ╨EPPER
; ╘ORONTO, ╧NTARIO
;
; BASED ON, BUT HEAVILY MODIFIED FROM
; THE ╨RO-╠INE/╙PINNAKER
; ├ ╨╧╫┼╥/╨╧╫┼╥ ├ SHELL FOR THE
; ├OMMODORE 64 HOME COMPUTER.
;
; ╘HE SHELL WAS MODIFIED TO REDUCE
; THE SIZE OF THE CODE, AND ARRANGE
; THINGS SO MEMORY PAGE 22 (HEX $16)
; WILL BE FREE FOR USE AS A "╥┴═DISK
; ╔NTERFACE ╨AGE", FOR USE WITH THE
; ├OMMODORE 1764 256╦ ╥┴═ EXPANDER
; FOR THE ├OMMODORE 64
;
; ╘HIS (BASICALLY) ALLOWS ALL PROGRAMS
; DESIGNED TO RUN UNDER THE SHELL TO
; OPERATE WITH THE ╥┴═ DISK
;
;
; DOLOAD.A
;
; DOLOAD, TRYLOAD;
; LOAD EXECUTABLE PROGRAMS FROM DRIVES
;
; ALSO GETFLNM
; OSTDIN
; OSTDOUT
; OPROUT
;
;
;
.REF SYSDEV
.REF SYSDRV
.REF WRKDEV
.REF WRKDRV
.REF STDINFL
.REF STDOUFL
;
; KERNAL ROUTINES, ETC
;
.REF SETLFS
.REF SETNAM
.REF OPEN
.REF CHKOUT
.REF CLRCHN
.REF LOAD
;
;
;
.DEF GETFLNM
.DEF OSTDIN
.DEF OSTDOUT
.DEF CMDCHK
.DEF OPROUT
.DEF DOLOAD
.DEF TRYLOAD
;
.REF CURCMDN
.REF STRAC ;; SAME AS PRFBUF, REMEMBER
;
.REF STRLOAD
.REF STRAPND
.REF STREND
.REF STREQ
.REF STRFOPN
.REF STRECHN
.REF STRBOUT
.REF CMDLBUF
.REF STROUT
;
; GETFLNM - COPIES FROM CMDLBUF,X
; TO STRAC, PREPENDING <DRV>:
;
; FOR OSTDIN, OSTDOUT
;
GETFLNM CLC
LDA WRKDRV
ADC #'0
STA STRAC
LDA #':
STA STRAC+1
T1070B INX
LDA CMDLBUF,X
BNE T1080F
SEC
RTS
T1080F CMP #$20
BEQ T1090F
CMP #$A0
T1090F BEQ T1070B
LDY #2
T1100B LDA CMDLBUF,X
BEQ T1110F
CMP #$20
BEQ T1110F
CMP #$A0
BEQ T1110F
STA STRAC,Y
INY
INX
BNE T1100B
T1110F LDA #0
STA STRAC,Y
DEX
STX $2A
CLC
RTS
;
; OSTDIN - OPEN STDIN
; (PROCESS <FILENAME)
;
OSTDIN LDA #$01
STA STDINFL
STY $2B
JSR GETFLNM
BCC T0980F
RTS
T0980F LDA #$01
LDX WRKDEV
LDY #$02
JSR STRFOPN ; OPEN 1,WRKDEV,2,STRAC
BCC T0990F
RTS
T0990F LDX WRKDEV
JMP CMDCHK ; AND RETURN
;
; OSTDOUT - OPEN STDOUT
; (PROCESS >FILENAME)
;
SCOMS .BYTE ",S"
.BYTE 0
SCOMW .BYTE ",W"
.BYTE 0
OSTDOUT LDA #$01
STA STDOUFL
STY $2B
JSR GETFLNM
BCC T1000F
RTS
T1000F LDX #0
JSR STREND
DEX
DEX
LDA STRAC,X
CMP #',
BEQ T1010F
LDX #<SCOMS
LDY #>SCOMS
JSR STRAPND
T1010F LDX #<SCOMW
LDY #>SCOMW
JSR STRAPND
LDA #2
LDX WRKDEV
LDY #3
JSR STRFOPN ;; OPEN 2,<WRK>,3,STRAC
BCC T1020F
RTS
T1020F LDX WRKDEV
;
; CMDCHK - GET COMMAND CHANNEL LINE
; INTO ECHNBUF;
; OUTPUT AND SET CARRY IF NON-ZERO CODE
; ALSO RESTORE X,Y FROM $2A,$2B
;
CMDCHK JSR STRECHN
BCC T1030F
JSR STRBOUT
SEC
T1030F LDX $2A
LDY $2B
RTS
;
; OPROUT - OPEN PRINTER (DEV 4)
; AS STDOUT (PROCESS >>)
;
OPROUT STX $2A
STY $2B
LDA #1
STA STDOUFL
LDA #2
LDX #4
LDY #7
JSR SETLFS
LDA #0
JSR SETNAM
JSR OPEN
BCS T1120F
LDX #2
JSR CHKOUT
T1120F PHP
JSR CLRCHN
PLP
LDX $2A
LDY $2B
RTS
;
; DOLOAD - LOADS NAME REPRESENTED BY STRING AT (X,Y)
;
DOLOAD STX $2A
STY $2B
JSR STRLOAD
LDX #<CURCMDN
LDY #>CURCMDN
JSR STREQ ; CMP WITH CURCMDN
BNE T0870F
CLC
RTS
T0870F LDX WRKDEV
LDY WRKDRV
JSR TRYLOAD ; TRY WORK DISK!
BCC T0880F
LDX SYSDEV
LDY SYSDRV
CPX WRKDEV ; DON'T REDO SAME DISK!
BNE T0875F
CPY WRKDRV
BEQ T0876F
T0875F JSR TRYLOAD ; TRY SYSTEM DISK!
BCC T0880F
T0876F LDX #<SCMDNF
LDY #>SCMDNF
JSR STROUT
SEC
RTS
SCMDNF .BYTE "COMMAND NOT FOUND"
.BYTE $0D,0
T0880F LDY #$13
T0890B LDA ($2A),Y
STA CURCMDN,Y
DEY
BPL T0890B
CLC
RTS
;
; TRYLOAD - ATTEMPT LOAD OF ($2A,$2B)
; FROM DEVICE X, DRIVE Y
;
SZERO .BYTE "0:"
.BYTE 0
SDOTSH .BYTE ".SH"
.BYTE 0
;
TRYLOAD STX VTRYDEV
TYA
CLC
ADC #'0
STA SZERO
LDX #<SZERO
LDY #>SZERO
JSR STRLOAD
LDX $2A
LDY $2B
JSR STRAPND
LDX #<SDOTSH
LDY #>SDOTSH
JSR STRAPND
LDX #0
JSR STREND
TXA
LDX #<STRAC
LDY #>STRAC
JSR SETNAM
LDX VTRYDEV
LDA #$04
TAY
JSR SETLFS ; LOAD 4,DEV,4,NAMBUF
LDA #$00
JSR LOAD
BCC T0970F
CMP #5
BNE T0940F
RTS
T0940F LDX VTRYDEV
JSR STRECHN
;JSR STRBOUT
SEC
T0970F RTS
VTRYDEV .BSS 1